package com.tcm.ucenter.service;

import com.base.core.exception.ServiceException;
import com.base.core.pager.PageBean;
import com.tcm.ucenter.domain.dto.UserAddressDTO;
import com.tcm.ucenter.domain.entity.UserAddress;

public interface UserAddressService {

    /**
     * 单条地址查询
     *
     * @param id
     * @return
     */
    UserAddressDTO findById(Long id);

    /**
     * 通过user_id分页获取列表数据
     *
     * @param userId
     * @param start
     * @param pagesize
     * @return
     * @throws ServiceException
     */
    PageBean<UserAddressDTO> listPageByUserId(Long userId, Long start, Long pagesize) throws ServiceException;

    /**
     * 新增地址
     *
     * @param userAddressDto
     * @throws Exception
     */
    void save(UserAddressDTO userAddressDto) throws Exception;

    /**
     * 更新地址
     *
     * @param userAddress
     */
    void update(UserAddressDTO userAddress) throws Exception;

    /**
     * 设置默认地址
     *
     * @param id
     */
    void defaultAddress(Long id, Long userId) throws Exception;

    /**
     * 获取默认地址
     *
     * @param userId
     * @return
     */
    UserAddressDTO findDefaultAddressByUserId(Long userId) throws Exception;

    /**
     * 移除用户默认地址
     *
     * @param userId
     */
    void removeDefaultAddress(Long userId);

    /**
     * 永久删除
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 删除到回收站
     *
     * @param id
     */
    void deleteLogic(Long id);

}
